The present invention is directed to the digital imaging arts. It finds particular application to a method of color correction using multi-level halftoning and will be described with particular reference thereto. It is to be appreciated that the present invention can also be applied to any type of color transformation process including color space transformation, device calibration and characterization, color correction, and the like.
Computers and other electronic equipment typically depict color in 3-D coordinates such as RGB. Many printers, on the other hand, print in either three-dimensional colorant space, cyan, magenta, yellow (CMY) or four-dimensional colorant space, cyan, magenta, yellow, and black (CMYK) which correspond to the input values, e.g. RGB. Frequently, a device independent color space is used as an intermediate representation of the image. A common choice for such a device independent space is a luminance-chrominance space, denoted generically as LC.sub.1 C.sub.2. The L component represents luminance or lightness, and C.sub.2 and C.sub.2 are the two chrominance coordinates representing red-green and yellow-blue variations, respectively. An example of such a space is CIELAB. Translations are then derived from input RGB to LC.sub.1 C.sub.2, and from LC.sub.1 C.sub.2 to printer colorant space.
While this invention is applicable to a wide variety of transformations, the discussion will focus on transforms from a luminance chrominance space LC.sub.1 C.sub.2 to printer colorant space CMYK. Such transformations are typically implemented by a 3-D look-up table (LUT), which converts each digital LC.sub.1 C.sub.2 input to the corresponding output CMYK value before being received by the printer.
A printer which has an ideal colorant behavior has a one-to-one correspondence of cyan-to-red, magenta-to-green, and yellow-to-blue. This means that when printed, the cyan colorant will only absorb red light, the magenta colorant will only absorb green light, and the yellow colorant will only absorb blue light. However, typical printer colorants deviate from this ideal behavior, and in fact absorb light in bands of the electromagnetic spectrum other than the intended absorption band. These so called unwanted absorptions lead to interactions between the colorants that result in a complex nonlinear relationship between digital values that drive the printer, and the resulting colorimetric response. A response, or other value, labeled as "colorimetric" refers to a measurement of the printed color, as seen by an average human observer, and represented in a device independent color coordinate system such as CIELAB. Modeling the calorimetric response across the entire range of CMYK values therefore cannot usually be achieved by a simple function, and in fact requires many parameters and measurements. The number of measurements required to characterize the printer adequately, can easily number 1,000 or more. Usually, in order to represent such a complex function at reasonable computational cost, a color correction LUT is built which approximates the mapping between colorimetric space and CMYK values. More specifically, the color correction LUT corrects for non-linearities and unwanted absorptions of colorants. For every input color specified in some luminance-chrominance space LC.sub.1 C.sub.2, the LUT retrieves the corresponding CMYK which, when printed and measured, will yield the requested LC.sub.1 C.sub.2 color, provided that this color is within the reproducible gamut of the device.
To build the LUT, a predefined set of CMYK digital values are sent to the printer. The printer prints a corresponding set of color patches. The calibration color patches are measured and a colorimetric LC.sub.1 C.sub.2 coordinate is determined for each patch, i.e. for each of the predefined CMYK values. Each of the measured LC.sub.1 C.sub.2 coordinates then, identifies a three-dimensional vector location within the three-dimensional space. Each LC.sub.1 C.sub.2 coordinate is typically represented by 8-bit values for each of the L, C.sub.1, and C.sub.2 components. Although such an 24-bit LC.sub.1 C.sub.2 coordinate is capable of addressing 256.sup.3 locations, the look-up table is typically partitioned into a smaller size, such as 16.times.16.times.16 (4096) table locations, each node of which stores a CMYK value. CMYK values at intermediate LC.sub.1 C.sub.2 points are determined by some form of interpolation among the LUT nodes. The size of the look-up table is a compromise between the desired accuracy of the look-up table (i.e. the fidelity of the output) and the expense of storing a large number of values. Thus after the calibration patches are produced, each measured LC.sub.1 C.sub.2 coordinate has a corresponding known CMYK value. Unfortunately, the LC.sub.1 C.sub.2 coordinates do not, in general, perfectly coincide with the node locations (i.e. the three dimensional intersection points) of the look-up table. Hence, the CMYK values placed at the nodes are estimated by some multidimensional data fitting technique such as Shepard's algorithm.
An illustration of the operation of a look-up table is instructive. Referring to FIG. 1, an input LC.sub.1 C.sub.2 value 10 is sent into the table 12 for conversion into a printer specific CMYK value. The conversion is accomplished by interpolating the known CMYK values corresponding to the nodes 14 nearest the input LC.sub.1 C.sub.2 coordinate location 10. Because the color is defined in three dimensions, the interpolation is similarly done in three dimensions. Common examples of 3-D interpolation techniques include trilinear, tetrahedral, and prism interpolation. Of these, tetrahedral interpolation is the fastest method, requiring interpolation only among 4 nodes. (The trilinear and prism schemes utilize 8 and 6 nodes, respectively.) All these techniques require several multiplication, addition, shift, and comparison operations for each output signal at each pixel; and are often implemented with special purpose hardware. This interpolated CMYK value is then output by a printer. Unfortunately, three-dimensional interpolation presents a significant computational burden for many applications.
The present invention provides a new and improved method of color correction which overcomes the above-referenced problems and others.